package EveryDay;

import java.util.*;

/**
 * P3158 求出出现两次数字的 XOR 值
 * */
public class P3158 {
    public static void main(String[] args) {

    }
}

class P3158Test01{
//    public int duplicateNumbersXOR(int[] nums) {
//        Map<Integer,Integer> map=new HashMap<>();
//
//        for(int num:nums){
//           if(map.containsKey(num)){
//               map.merge(num, 1, Integer::sum);
//           }
//           else{
//               map.put(num, 1);
//           }
//        }
//        ArrayList<Integer> arrayList=new ArrayList<>();
//        Set<Integer> keys=map.keySet();
//        int sum=0;
//        for(Integer key:keys){
//            Integer value=map.get(key);
//            if(value==2){
//                arrayList.add(key);
//            }
//        }
//        int ans=0;
//        for(int num:arrayList){
//            ans^=num;
//        }
//
//    return ans;
//    }

    public int duplicateNumbersXOR(int[] nums) {
        //优化代码
        int ans = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            //如果已经出现第二次就直接异或
            if (map.containsKey(num)) {
                ans ^= num;
            } else {
                //第一次出现就放入
                map.put(num, 1);
            }
        }
        return ans;
    }
}

